// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:scheduled_test/scheduled_test.dart';
import 'package:scheduled_test/scheduled_stream.dart';

import '../../descriptor.dart' as d;
import '../../test_pub.dart';

main() {
  initConfig();
  integration('activating a path package installs dependencies', () {
    servePackages((builder) {
      builder.serve("bar", "1.0.0", deps: {"baz": "any"});
      builder.serve("baz", "2.0.0");
    });

    d.dir("foo", [
      d.libPubspec("foo", "0.0.0", deps: {
        "bar": "any"
      }),
      d.dir("bin", [
        d.file("foo.dart", "main() => print('ok');")
      ])
    ]).create();

    var pub = startPub(args: ["global", "activate", "-spath", "../foo"]);
    pub.stdout.expect(consumeThrough("Resolving dependencies..."));
    pub.stdout.expect(consumeThrough("Downloading bar 1.0.0..."));
    pub.stdout.expect(consumeThrough("Downloading baz 2.0.0..."));
    pub.stdout.expect(consumeThrough(
        startsWith("Activated foo 0.0.0 at path")));
    pub.shouldExit();

    // Puts the lockfile in the linked package itself.
    d.dir("foo", [
      d.matcherFile("pubspec.lock", allOf([
        contains("bar"), contains("1.0.0"),
        contains("baz"), contains("2.0.0")
      ]))
    ]).validate();
  });
}
